package co.com.smart.persistence.entity.dto;

import java.io.Serializable;

import javax.persistence.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the smart_medicos database table.
 * 
 */
@Entity
@Table(name="smart_medicos")
@NamedQuery(name="SmartMedico.findAll", query="SELECT s FROM SmartMedico s")
public class SmartMedico implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="sm_scmedico")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private BigDecimal smScmedico;

	@Column(name="sm_conumeroregistro")
	private String smConumeroregistro;

	@Column(name="sm_cousuario")
	private String smCousuario;

	@Temporal(TemporalType.DATE)
	@Column(name="sm_fhingreso")
	private Date smFhingreso;

	@Temporal(TemporalType.DATE)
	@Column(name="sm_fhmodificacion")
	private Date smFhmodificacion;

	@Temporal(TemporalType.DATE)
	@Column(name="sm_fhretiro")
	private Date smFhretiro;

	//bi-directional many-to-one association to SmartAgenda
	@OneToMany(cascade = CascadeType.ALL,mappedBy="smartMedico", fetch = FetchType.LAZY)
	private List<SmartAgenda> smartAgendas;

	//bi-directional many-to-one association to SmartCita
	@OneToMany(cascade = CascadeType.ALL,mappedBy="smartMedico", fetch = FetchType.LAZY)
	private List<SmartCita> smartCitas;

	//bi-directional many-to-one association to SmartDatosMaestro
	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name="sm_sctiposervicio",referencedColumnName="sm_scdatosmaestros")
	private SmartDatosMaestro smartDatosMaestro;

	//bi-directional many-to-one association to SmartEspecialidad
	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name="sm_scespecialidad",referencedColumnName="sm_scespecialidad")
	private SmartEspecialidad smartEspecialidad;

	//bi-directional many-to-one association to SmartPersona
	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name="sm_scpersona",referencedColumnName="sm_scpersona")
	private SmartPersona smartPersona;

	public SmartMedico() {
	}

	public BigDecimal getSmScmedico() {
		return this.smScmedico;
	}

	public void setSmScmedico(BigDecimal smScmedico) {
		this.smScmedico = smScmedico;
	}

	public String getSmConumeroregistro() {
		return this.smConumeroregistro;
	}

	public void setSmConumeroregistro(String smConumeroregistro) {
		this.smConumeroregistro = smConumeroregistro;
	}

	public String getSmCousuario() {
		return this.smCousuario;
	}

	public void setSmCousuario(String smCousuario) {
		this.smCousuario = smCousuario;
	}

	public Date getSmFhingreso() {
		return this.smFhingreso;
	}

	public void setSmFhingreso(Date smFhingreso) {
		this.smFhingreso = smFhingreso;
	}

	public Date getSmFhmodificacion() {
		return this.smFhmodificacion;
	}

	public void setSmFhmodificacion(Date smFhmodificacion) {
		this.smFhmodificacion = smFhmodificacion;
	}

	public Date getSmFhretiro() {
		return this.smFhretiro;
	}

	public void setSmFhretiro(Date smFhretiro) {
		this.smFhretiro = smFhretiro;
	}

	public List<SmartAgenda> getSmartAgendas() {
		return this.smartAgendas;
	}

	public void setSmartAgendas(List<SmartAgenda> smartAgendas) {
		this.smartAgendas = smartAgendas;
	}

	public SmartAgenda addSmartAgenda(SmartAgenda smartAgenda) {
		getSmartAgendas().add(smartAgenda);
		smartAgenda.setSmartMedico(this);

		return smartAgenda;
	}

	public SmartAgenda removeSmartAgenda(SmartAgenda smartAgenda) {
		getSmartAgendas().remove(smartAgenda);
		smartAgenda.setSmartMedico(null);

		return smartAgenda;
	}

	public List<SmartCita> getSmartCitas() {
		return this.smartCitas;
	}

	public void setSmartCitas(List<SmartCita> smartCitas) {
		this.smartCitas = smartCitas;
	}

	public SmartCita addSmartCita(SmartCita smartCita) {
		getSmartCitas().add(smartCita);
		smartCita.setSmartMedico(this);

		return smartCita;
	}

	public SmartCita removeSmartCita(SmartCita smartCita) {
		getSmartCitas().remove(smartCita);
		smartCita.setSmartMedico(null);

		return smartCita;
	}

	public SmartDatosMaestro getSmartDatosMaestro() {
		return this.smartDatosMaestro;
	}

	public void setSmartDatosMaestro(SmartDatosMaestro smartDatosMaestro) {
		this.smartDatosMaestro = smartDatosMaestro;
	}

	public SmartEspecialidad getSmartEspecialidad() {
		return this.smartEspecialidad;
	}

	public void setSmartEspecialidad(SmartEspecialidad smartEspecialidad) {
		this.smartEspecialidad = smartEspecialidad;
	}

	public SmartPersona getSmartPersona() {
		return this.smartPersona;
	}

	public void setSmartPersona(SmartPersona smartPersona) {
		this.smartPersona = smartPersona;
	}

}